#include <stdio.h>
#include <unistd.h>
#include <signal.h>

void sigcb(int no) {
    printf("recv signal:%d\n", no);
}

int main()
{
    signal(2, sigcb);
    signal(40, sigcb);//修改2和40号信号的处理方式
    sigset_t set, old;
    sigemptyset(&set);//先清空要操作的信号集合
    sigaddset(&set, 2);
    sigaddset(&set, 40);
    sigprocmask(SIG_BLOCK, &set, &old);//阻塞2和40号信号
    printf("enter continue!\n");
    getchar();//获取一个字符
    printf("continue!!\n");
    sigprocmask(SIG_SETMASK, &old, NULL);//解除阻塞
    //将block集合恢复到未修改前。即解除2和40号信号的阻塞
    while(1) sleep(1);
    return 0;
}
